package com.observer.inner_api;


import com.observer.inner_api.observer_object.CurrentConditionsDisplay;
import com.observer.inner_api.observer_object.ForecastDisplay;
import com.observer.inner_api.observer_object.StatisticsDisplay;

/**
 * @ClassName: TestObserver
 * @Author: ZhangYue26
 * @Description: 测试观察者  TODO 特别注意custom包中是我自己新建的被观察者与观察者接口，inner_api包中是java内置的接口
 *                          TODO 使用java内置的API接口时需要注意，观察者实现的是java.util.Observer接口,被观察者是继承的java.util.Observable类
 * @Date: 2020-09-17
 */
public class TestObserver {
    public static void main(String[] args) {
        WeatherData weatherData = new WeatherData();/** 被观察者新建对象的构造是空的，而自定义实现观察者模式的被观察者对象的构造是非空的，同时注意的是通知其他观察者时需要将 先调用父类的setChanged()方法更改通知状态，然后调用通知所有观察者方法notifyObservers()  */
        CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);/** 观察者对象1--构造中添加被观察者weatherData并将当前观察者(当前类)添加到被观察者内置的观察者列表中(内置列表已经在父类Observable中存在)  */
        StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData);/**  观察者对象2--构造中添加被观察者weatherData并将当前观察者(当前类)添加到被观察者内置的观察者列表中(内置列表已经在父类Observable中存在)  */
        ForecastDisplay forecastDisplay = new ForecastDisplay(weatherData);/** 观察者对象3--构造中添加被观察者weatherData并将当前观察者(当前类)添加到被观察者内置的观察者列表中(内置列表已经在父类Observable中存在)  */
        weatherData.setMeasurements(25,0.698f,1010000);
    }
}
